/*
 * @Author: 橘子
 * @Date: 2022-11-20 13:41:46
 * @Project_description: 下载文件
 * @Description: 代码是我抄的，不会也是真的
 */
import axios from 'axios'
import { Loading, Message } from 'element-ui'
import FileSaver from 'file-saver'
// import cookies from './util.cookies'
/**
 * @desc: 校验数据格式
 * @param {*} data
 * @return {*}
 * @Author: 橘子
 */
const blobValidate = async (data) => {
  try {
    const text = await data.text()
    JSON.parse(text)
    return false
  } catch (error) {
    return true
  }
}
/**
 * @desc:  下载文件
 * @param {*} url 文件地址
 * @return {*}
 * @Author: 橘子
 */
const dowloadFile = (url) => {
  //获取token
  // let token = cookies.get('token')
  // 加载loding
  const loading = Loading.service({
    text: '正在下载...',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.7)',
  })
  try {
    // 获取下载文件名称
    let urls = url.split('/')
    let name = urls[urls.length - 1]
    axios({
      method: 'get',
      url: url,
      responseType: 'blob',
      // 如果需要token
      // headers: { Authorization: 'Bearer ' + '' },
      // headers: { token: token },
    }).then(async (res) => {
      // 校验是否为blob
      const isLogin = await blobValidate(res.data)
      if (isLogin) {
        const blob = new Blob([res.data])
        FileSaver.saveAs(blob, name)
        // 关闭loading
        loading.close()
      } else {
        Message.error('下载失败,文件格式不正确')
        // 关闭loading
        loading.close()
      }
    }).catch(err => {
      Message.error('下载失败')
      // 关闭loading
      loading.close()
    })
  } catch (error) {
    Message.error('下载失败')
    // 关闭loading
    loading.close()
  }
}

export async function blobSave(
  blob,
  name,
  type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
) {
  // 加载loding
  const loading = Loading.service({
    text: '正在下载...',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.7)',
  })
  try {
    // 校验是否为blob
    const isLogin = await blobValidate(blob)
    if (isLogin) {
      const blob = new Blob([blob], { type: type })
      FileSaver.saveAs(blob, name)
      // 关闭loading
      loading.close()
    } else {
      Message.error('下载失败')
      // 关闭loading
      loading.close()
    }
  } catch (error) {
    Message.error('下载失败')
    // 关闭loading
    loading.close()
  }
}

export default dowloadFile
